One of the challenges facing processor designers is the handling of an ever-increasing number of external devices which wish to communicate with the processor. Generally this is done by providing some kind of interrupt handling capability for the processor for handling activity arising at ports connected to external devices. Increasingly, more sophisticated interface logic is used at these ports to deal with, for example, multiple external devices per port.
Interfacing is needed in a wide variety of different contexts. One context which is discussed herein by way of a background example is in mobile applications processing.
FIG. 1 shows an exemplary application of a mobile applications processor 2. The applications processor 2 comprises a CPU 4 and a plurality of interface controllers 6 which interface with a plurality of peripheral devices 8. The interface controllers include: a memory controller 6a for interfacing with a hard-drive (HDD) 8a and a SDRAM memory 8b; a video controller 6b for i nterfacing with a camera 8c; a display controller 6c for interfacing with an LCD display 8d; an audio controller 6d for interfacing with a microphone 8e, speaker 8f and headset 8g; and a connectivity controller 6e for interfacing with a keyboard 8h, a Universal Serial Bus (USB) device 8i, a Secure Digital (SD) card 8j, a Multi-Media Card (MMC) 8k, and a Universal Asynchronous Receiver/Transmitter (UART) device 8I. The interface controllers 6 are typically connected to the CPU 4 via a bus 3. The system also comprises a power controller 10 and radio processor 12.
Note that the interface controllers 6 are shown somewhat schematically, but represent generally some kind of dedicated I/O logic or specially configured ports.
Conventionally, external interfacing is achieved either using interrupts or by polling. When interrupts are used, an external peripheral device sends a signal to inform the processor either that it has data ready to input to the processor or that it requires data from the processor. When polling is used, the processor continually checks the state of the device to determine whether or not it is ready to supply or accept data.
One possibility for implementing an applications processor 2 such as that of FIG. 1 is to use an Application Specific Integrated Circuit microcontroller (ASIC). ASICs are hardwired devices possibly including microprocessors dedicated to a particular application and optimized to suit that application. For a given function, they are generally cheaper and consume less power than other options. However, they are complex to design, must be pre-designed and cannot readily be reconfigured.
Another possibility is to use Field Programmable Gate Array (FPGA) devices. FPGAs are semiconductor devices that can be configured “in the field” after manufacture. To configure an FPGA, first a computer is used to model the desired logical functions, for example by drawing a schematic diagram or creating a text file describing the functions. The FPGA comprises an array of look-up tables which communicate via statically configured interconnects. The computer model is compiled using software provided by the FPGA vendor, which creates a binary file that can be downloaded into the FPGA look-up tables. This allows manufacturers of equipment to tailor the FPGA to meet their own individual needs.
In this example, the interface controllers 6 are implemented as FPGAs. This has the benefit that the manufacturer of the mobile telephone can purchase generic FPGA devices 2 and then configure them on site (i.e. “in the field”) to be specific to their desired application. The disadvantage of FPGAs however is that they are more expensive, slower and consume more power than ASICs.
In alternative examples, the whole chip 2 could be implemented in FPGA, or the chip 2 could be a general purpose processor with separate FPGA chips connected between the chip 2 and the respective peripherals 8. However, these options would be even more expensive and power-consuming—prohibitively so for most mobile phones and other consumer devices.
It would be advantageous to achieve the configurability of an FPGA but with the price, speed, scope and energy consumption levels of an ASIC. One particular challenge involved in achieving this aim is to provide suitable timing for the interactions between a processor and its environment.